// pages/my/setUser/setUser.js
const app = getApp(); // 获取全局应用实例
const baseURL = app.globalData.baseURL

Page({
  data:{
    ifChoose: false,  // 是否更改过头像或者昵称
    avatar: '', // 默认头像
    nickname: '',
    // 其他数据字段...
  },
  onLoad() {
    this.setData({
      avatar: wx.getStorageSync('avatar'), // 默认头像
      nickname: wx.getStorageSync('nickname'),
      // 其他数据字段...
    })
  },
  // 每次页面显示时
  onShow(){},

  // 获取微信头像
  onChooseAvatar(e) {
    const tempPath = e.detail.avatarUrl // 获取临时头像路径
    wx.getFileSystemManager().saveFile({
      tempFilePath: tempPath,  // 传入临时路径
      success: res => {
        const avatar = res.savedFilePath;  // 持久化后的本地路径
        // 传到后端生成正式的image链接
        this.uploadToServer(avatar, 'avatar')
      },
      fail: err => { console.error('保存失败:', err); },
    });
  },

  // 用户输入昵称
  onInputNickname(e) {
    // 传到后端生成正式后端有存过的昵称
    this.uploadToServer(e.detail.value, 'nickname')
  },

  // 有更改过头像或者昵称,就上传给服务器保存起来
  uploadToServer(data, bs){
    const token = wx.getStorageSync('token').access
    if(bs === 'nickname'){
    wx.request({
      url: `${baseURL}api/avatNickName/`,
      method: 'POST',
      header: { 'Authorization': 'Bearer ' + token, 
                'Content-Type': 'application/x-www-form-urlencoded'
              },
      data:{nickname:data},
      success: res => {
        const resultData = res.data
        const nickname = resultData.nickname ? resultData.nickname : data
        this.setData({ nickname: nickname, ifChoose: true }) 
        wx.setStorageSync('nickname', nickname)
      }
    })
  }else{
    wx.uploadFile({
      url: `${baseURL}api/avatNickName/`,  // 默认是POST
      header: { 'Authorization': 'Bearer ' + token,   // Bearer为JWT的标准授权头格式‌‌
                'Content-Type': 'multipart/form-data' // 明确内容类型
       }, 
      filePath: data,
      name: bs, // 必须与DRF字段名一致
      // formData:{ [bs]:data }, // 不一定需要
      success: res => {
         const resultData = JSON.parse(res.data)  // 这里需要解析一下，昵称那里就不用
          // 严格判断有效字符串
           const hasAvatar = resultData.avatar && typeof resultData.avatar === 'string';
           //  .replace(/[\\/]+$/, '')‌：匹配字符串末尾连续出现的反斜杠（\）或（/）取代为''，即删掉
           const serverAvatar = `${baseURL.replace(/[\\/]+$/, '')}${resultData.avatar}`
           const avatar = hasAvatar ? serverAvatar : '/static/detail/钻石.png'
           this.setData({ avatar: avatar, ifChoose: true }) 
           wx.setStorageSync('avatar', avatar)
        },
      fail: err => { console.error('请求失败:', err) }
    })
  }
  },
    // 离开页面时
    onUnload(){
      if(this.data.ifChoose){}},  // this.uploadToServer()

})
